<?php
namespace app\modules\supplier\logic;
use app\modules\base\LogicBase;
use think\Db;
/**
 *
 */

class SupplierCashApplyLogic extends LogicBase
{

    //验证
    protected $valid;

    public function _initialize()
    {

        $this->valid = validate('app\modules\supplier\validate\SupplierCashApplyPost'); //游客验证
    }
    /**
     * 添加供应商申请
     * @param array $data 参数
     * @return bool|array
     */

    public function add($data = [])
    {

        // Db::startTrans();//开启事物

        if (!$this->valid->check($data)) {//字段验证
            $this->_error[] = $this->valid->getError();
            return false;
        }else{
              //跳过重复申请步骤

//            //避免重复申请 未审核情况
//            if (Db::name('supplier_cash_apply')->where(['supplier_id'=>$data['supplier_id'],'apply_status'=>1])->find()) {
//                $this->_error[] ='已经申请过了，请等待审核！';
//                return false;
//            }
//
//            //避免重复申请 审核通过情况
//            if (Db::name('supplier_cash_apply')->where(['supplier_id'=>$data['supplier_id'],'apply_status'=>2])->find()) {
//                $this->_error[] ='申请已经通过！';
//                return false;
//            }

            $balance =  Db::name('supplier')->where(['supplier_id'=>$data['supplier_id']])->value('balance'); //获取账户余额

            //监测价格
            if (!is_numeric($data['apply_price'])){
                $this->_error[]='请填写正确的提现格式';
                return false;
            }
           //监测余额
            if($data['apply_price'] > $balance){
                $this->_error[]='提现金额不能大于余额！';
                return false;
            }

           //监测审核中
            //申请过还在审核中的提现
            $apply_price =  Db::name('supplier_cash_apply')->field('COALESCE(SUM(apply_price),0) as apply_price')->where(['supplier_id'=>$data['supplier_id'],'apply_status'=>1])->find()['apply_price'];

            if ($apply_price+$data['apply_price'] > $balance){
                $this->_error[]='您已经没有余额可以申请提现了！请等待审核！';
                return false;
            }

        }

        $res = Db::name('supplier_cash_apply')->insert($data);

        if ($res) {
            return true;
        }else{
            return false;
        }

    }
}